package com.yunxin.core.infra.persistence.repository.product;

import com.yunxin.core.domain.model.product.ProductUnitPriceConfig;
import com.yunxin.core.domain.model.product.ProductUnitPriceConfigRepository;
import com.yunxin.core.infra.persistence.converter.ProductConverter;
import com.yunxin.core.infra.persistence.entity.product.ProductUnitPriceConfigDO;
import com.yunxin.core.infra.persistence.mapper.product.ProductUnitPriceConfigExtendMapper;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Repository;

/**
 * @author zero°
 * @since 2023-07-13
 */
@Repository
@RequiredArgsConstructor
public class ProductUnitPriceConfigRepositoryImpl implements ProductUnitPriceConfigRepository {

    private final ProductUnitPriceConfigExtendMapper productUnitPriceConfigExtendMapper;

    private final ProductConverter productConverter;

    @Override
    public boolean saveProductUnitPriceConfig(ProductUnitPriceConfig productUnitPriceConfig) {
        ProductUnitPriceConfigDO productUnitPriceConfigDO = productConverter.formProductUnitPriceConfig(productUnitPriceConfig);
        int count = productUnitPriceConfigExtendMapper.insertSelective(productUnitPriceConfigDO);
        return count > 0;
    }

    @Override
    public boolean updateProductUnitPriceConfig(ProductUnitPriceConfig productUnitPriceConfig) {
        ProductUnitPriceConfigDO productUnitPriceConfigDO = productConverter.formProductUnitPriceConfig(productUnitPriceConfig);
        int count = productUnitPriceConfigExtendMapper.updateByPrimaryKeySelective(productUnitPriceConfigDO);
        return count > 0;
    }

    @Override
    public ProductUnitPriceConfig getProductUnitPriceConfigByProductId(Long productId) {
        ProductUnitPriceConfigDO productUnitPriceConfigDO = productUnitPriceConfigExtendMapper.selectByProductId(productId);
        return productConverter.toProductUnitPriceConfig(productUnitPriceConfigDO);
    }
}
